/*
 * @Description: 跳转权限-路由前置钩子
 * @Autor: HuiSir<273250950@qq.com>
 * @Date: 2021-09-17 19:28:46
 * @LastEditTime: 2023-03-30 10:22:43
 */
import { NavigationGuardWithThis } from 'vue-router'
import myLoading from '@/helper/Loading'

const Hook: NavigationGuardWithThis<void> = async (to, from, next) => {

    // 加载loading
    myLoading.show()

    /* 关于权限验证 */
    // 若该用户没有访问该路由的权限，则请求回来的路由中不会包含该路由信息，则访问时会重定向到404页面
    // 若请求回的路由中已有该路由信息，但中途被管理员卸去了权限，则通过接口请求来验证权限
    // 在接口携带的token中添加菜单的ID信息，管理端通过该用户角色信息中的权限信息与菜单ID进行匹配，若匹配失败，则返回无权限
    // 当然在后端验证菜单的权限时，也要判断菜单是否已在中途被删除或被停用（status字段）
    // 所以权限相关验证放到请求钩子中，这里无需考虑

    // 正常情况直接跳转
    next()
}

export default Hook